In many different fields, there is a need to collect data from a variety of different types of servers. As one example, it has long been known that the collection and analysis of performance data for servers, such as web servers, application servers, file servers, database servers, and the like, can inform an administrator's knowledge about the performance of those servers and can suggest ways in which the servers can be tuned to enhance the performance of those servers. Such performance data, which typically does not include customer or transactional data, can include, without limitation, monitoring data, server logs, specific performance data types (processor utilization, file system data, number of requests serviced over a certain period of time, amount of swap file used, number of disk accesses over a certain period of time, etc.), parameters and information about hardware and/or software configuration, and/or the like.
One common way to acquire performance data from a server is for an administrator to log on to that server and review the server's performance data directly. This typically is a time-intensive and labor-intensive process, however, and many techniques have been proposed to alleviate the burden of such manual administration. A common problem with such techniques is that there may be a variety of different types of servers in a typical system environment, so a “one size fits all” solution is hard to come by.
Some have attempted to address this problem through the use of customized software agents, which can be installed on servers from which data is to be collected. The agents then can collect performance data on each server and either store it locally for later collection or, on their own initiative, transmit the data back to a central server, using a “push” model of data collection. Examples of such techniques include simple network management protocol (“SNMP”), the Oracle Configuration Manager (“OCM”) product available from Oracle Corporation, and the like. Agent-based solutions, however, can become expensive and difficult to manage, in part because a specific agent typically needs to be designed for each type of server in the environment, and each agent needs to be managed separately.
Another model of data collection can be described as “agentless” data collection. This type of model provides a centralized service that probes several targets (referred to herein as “data servers”) in real time and collects the desired data without the need to install any software agents on the targets. This is sometimes referred to as the “pull” model of data collection Existing techniques using this model are quite limited, however, in that the typically support a limited range of target configurations (and therefore cannot be used in diverse environments), and they generally can only obtain data about hardware or very basic software configurations. Such solutions also typically present security issues, because they require fairly low-level access to the target systems and often are implemented in a manner that is opaque to the operations of the targets.
Hence, there is a need for an improved solution to the problem of data collection.